// 引入文件系统模块，用于文件流操作
const fs = require('fs');
// 引入流模块，用于创建转换流
const { Transform } = require('stream');

// 创建转换流，将流经的数据转换为大写
const upperCaseTransform = new Transform({
  // transform 方法是转换流的核心，处理每个数据块
  transform(chunk, encoding, callback) {
    // 将数据块转为字符串，再转为大写，推送到下一个流
    this.push(chunk.toString().toUpperCase());
    // 表示当前数据块处理完成
    callback();
  }
});

// 1. 从 from.txt 创建可读流（读取文件内容）
// 2. 通过管道（pipe）连接到转换流，将内容转为大写
// 3. 再通过管道连接到 to.txt 的可写流，将转换后的内容写入
fs.createReadStream('from.txt', 'utf8')
  .pipe(upperCaseTransform)
  .pipe(fs.createWriteStream('to.txt', 'utf8'))
  // 监听可写流的 finish 事件，当写入完成时触发
  .on('finish', () => {
    console.log('文件内容已从 from.txt 转换为大写并写入 to.txt');
  });

// （可选）监听可读流错误
fs.createReadStream('from.txt', 'utf8').on('error', (err) => {
  console.error('可读流错误:', err);
});

// （可选）监听可写流错误
fs.createWriteStream('to.txt', 'utf8').on('error', (err) => {
  console.error('可写流错误:', err);
});